// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/*! 
 * @file IDLElementTest.h
 * This header file contains the declaration of the described types in the IDL file.
 *
 * This file was generated by the tool gen.
 */

#ifndef _IDLElementTest_H_
#define _IDLElementTest_H_

// TODO Poner en el contexto.
#include "NestedElement.h"

#include <stdint.h>
#include <array>
#include <string>
#include <vector>

#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#define eProsima_user_DllExport __declspec( dllexport )
#else
#define eProsima_user_DllExport
#endif
#else
#define eProsima_user_DllExport
#endif

#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#if defined(IDLElementTest_SOURCE)
#define IDLElementTest_DllAPI __declspec( dllexport )
#else
#define IDLElementTest_DllAPI __declspec( dllimport )
#endif // IDLElementTest_SOURCE
#else
#define IDLElementTest_DllAPI
#endif
#else
#define IDLElementTest_DllAPI
#endif // _WIN32

namespace eprosima
{
    namespace fastcdr
    {
        class Cdr;
    }
}

namespace test
{
    /*!
     * @brief This class represents the enumeration Color defined by the user in the IDL file.
     * @ingroup IDLELEMENTTEST
     */
    enum Color : uint32_t
    {
        red,
        green,
        blue
    };
    /*!
     * @brief This class represents the structure IDLElementTest defined by the user in the IDL file.
     * @ingroup IDLELEMENTTEST
     */
    class IDLElementTest
    {
    public:

        /*!
         * @brief Default constructor.
         */
        eProsima_user_DllExport IDLElementTest();
        
        /*!
         * @brief Default destructor.
         */
        eProsima_user_DllExport ~IDLElementTest();
        
        /*!
         * @brief Copy constructor.
         * @param x Reference to the object test::IDLElementTest that will be copied.
         */
        eProsima_user_DllExport IDLElementTest(const IDLElementTest &x);
        
        /*!
         * @brief Move constructor.
         * @param x Reference to the object test::IDLElementTest that will be copied.
         */
        eProsima_user_DllExport IDLElementTest(IDLElementTest &&x);
        
        /*!
         * @brief Copy assignment.
         * @param x Reference to the object test::IDLElementTest that will be copied.
         */
        eProsima_user_DllExport IDLElementTest& operator=(const IDLElementTest &x);
        
        /*!
         * @brief Move assignment.
         * @param x Reference to the object test::IDLElementTest that will be copied.
         */
        eProsima_user_DllExport IDLElementTest& operator=(IDLElementTest &&x);
        
        /*!
         * @brief This function sets a value in member charTest
         * @param _charTest New value for member charTest
         */
        inline eProsima_user_DllExport void charTest(char _charTest)
        {
            m_charTest = _charTest;
        }

        /*!
         * @brief This function returns the value of member charTest
         * @return Value of member charTest
         */
        inline eProsima_user_DllExport char charTest() const
        {
            return m_charTest;
        }

        /*!
         * @brief This function returns a reference to member charTest
         * @return Reference to member charTest
         */
        inline eProsima_user_DllExport char& charTest()
        {
            return m_charTest;
        }
        /*!
         * @brief This function sets a value in member wcharTest
         * @param _wcharTest New value for member wcharTest
         */
        inline eProsima_user_DllExport void wcharTest(wchar_t _wcharTest)
        {
            m_wcharTest = _wcharTest;
        }

        /*!
         * @brief This function returns the value of member wcharTest
         * @return Value of member wcharTest
         */
        inline eProsima_user_DllExport wchar_t wcharTest() const
        {
            return m_wcharTest;
        }

        /*!
         * @brief This function returns a reference to member wcharTest
         * @return Reference to member wcharTest
         */
        inline eProsima_user_DllExport wchar_t& wcharTest()
        {
            return m_wcharTest;
        }
        /*!
         * @brief This function sets a value in member octetTest
         * @param _octetTest New value for member octetTest
         */
        inline eProsima_user_DllExport void octetTest(uint8_t _octetTest)
        {
            m_octetTest = _octetTest;
        }

        /*!
         * @brief This function returns the value of member octetTest
         * @return Value of member octetTest
         */
        inline eProsima_user_DllExport uint8_t octetTest() const
        {
            return m_octetTest;
        }

        /*!
         * @brief This function returns a reference to member octetTest
         * @return Reference to member octetTest
         */
        inline eProsima_user_DllExport uint8_t& octetTest()
        {
            return m_octetTest;
        }
        /*!
         * @brief This function sets a value in member shortTest
         * @param _shortTest New value for member shortTest
         */
        inline eProsima_user_DllExport void shortTest(int16_t _shortTest)
        {
            m_shortTest = _shortTest;
        }

        /*!
         * @brief This function returns the value of member shortTest
         * @return Value of member shortTest
         */
        inline eProsima_user_DllExport int16_t shortTest() const
        {
            return m_shortTest;
        }

        /*!
         * @brief This function returns a reference to member shortTest
         * @return Reference to member shortTest
         */
        inline eProsima_user_DllExport int16_t& shortTest()
        {
            return m_shortTest;
        }
        /*!
         * @brief This function sets a value in member ushortTest
         * @param _ushortTest New value for member ushortTest
         */
        inline eProsima_user_DllExport void ushortTest(uint16_t _ushortTest)
        {
            m_ushortTest = _ushortTest;
        }

        /*!
         * @brief This function returns the value of member ushortTest
         * @return Value of member ushortTest
         */
        inline eProsima_user_DllExport uint16_t ushortTest() const
        {
            return m_ushortTest;
        }

        /*!
         * @brief This function returns a reference to member ushortTest
         * @return Reference to member ushortTest
         */
        inline eProsima_user_DllExport uint16_t& ushortTest()
        {
            return m_ushortTest;
        }
        /*!
         * @brief This function sets a value in member longTest
         * @param _longTest New value for member longTest
         */
        inline eProsima_user_DllExport void longTest(int32_t _longTest)
        {
            m_longTest = _longTest;
        }

        /*!
         * @brief This function returns the value of member longTest
         * @return Value of member longTest
         */
        inline eProsima_user_DllExport int32_t longTest() const
        {
            return m_longTest;
        }

        /*!
         * @brief This function returns a reference to member longTest
         * @return Reference to member longTest
         */
        inline eProsima_user_DllExport int32_t& longTest()
        {
            return m_longTest;
        }
        /*!
         * @brief This function sets a value in member ulongTest
         * @param _ulongTest New value for member ulongTest
         */
        inline eProsima_user_DllExport void ulongTest(uint32_t _ulongTest)
        {
            m_ulongTest = _ulongTest;
        }

        /*!
         * @brief This function returns the value of member ulongTest
         * @return Value of member ulongTest
         */
        inline eProsima_user_DllExport uint32_t ulongTest() const
        {
            return m_ulongTest;
        }

        /*!
         * @brief This function returns a reference to member ulongTest
         * @return Reference to member ulongTest
         */
        inline eProsima_user_DllExport uint32_t& ulongTest()
        {
            return m_ulongTest;
        }
        /*!
         * @brief This function sets a value in member longlongTest
         * @param _longlongTest New value for member longlongTest
         */
        inline eProsima_user_DllExport void longlongTest(int64_t _longlongTest)
        {
            m_longlongTest = _longlongTest;
        }

        /*!
         * @brief This function returns the value of member longlongTest
         * @return Value of member longlongTest
         */
        inline eProsima_user_DllExport int64_t longlongTest() const
        {
            return m_longlongTest;
        }

        /*!
         * @brief This function returns a reference to member longlongTest
         * @return Reference to member longlongTest
         */
        inline eProsima_user_DllExport int64_t& longlongTest()
        {
            return m_longlongTest;
        }
        /*!
         * @brief This function sets a value in member ulonglongTest
         * @param _ulonglongTest New value for member ulonglongTest
         */
        inline eProsima_user_DllExport void ulonglongTest(uint64_t _ulonglongTest)
        {
            m_ulonglongTest = _ulonglongTest;
        }

        /*!
         * @brief This function returns the value of member ulonglongTest
         * @return Value of member ulonglongTest
         */
        inline eProsima_user_DllExport uint64_t ulonglongTest() const
        {
            return m_ulonglongTest;
        }

        /*!
         * @brief This function returns a reference to member ulonglongTest
         * @return Reference to member ulonglongTest
         */
        inline eProsima_user_DllExport uint64_t& ulonglongTest()
        {
            return m_ulonglongTest;
        }
        /*!
         * @brief This function sets a value in member floatTest
         * @param _floatTest New value for member floatTest
         */
        inline eProsima_user_DllExport void floatTest(float _floatTest)
        {
            m_floatTest = _floatTest;
        }

        /*!
         * @brief This function returns the value of member floatTest
         * @return Value of member floatTest
         */
        inline eProsima_user_DllExport float floatTest() const
        {
            return m_floatTest;
        }

        /*!
         * @brief This function returns a reference to member floatTest
         * @return Reference to member floatTest
         */
        inline eProsima_user_DllExport float& floatTest()
        {
            return m_floatTest;
        }
        /*!
         * @brief This function sets a value in member doubleTest
         * @param _doubleTest New value for member doubleTest
         */
        inline eProsima_user_DllExport void doubleTest(double _doubleTest)
        {
            m_doubleTest = _doubleTest;
        }

        /*!
         * @brief This function returns the value of member doubleTest
         * @return Value of member doubleTest
         */
        inline eProsima_user_DllExport double doubleTest() const
        {
            return m_doubleTest;
        }

        /*!
         * @brief This function returns a reference to member doubleTest
         * @return Reference to member doubleTest
         */
        inline eProsima_user_DllExport double& doubleTest()
        {
            return m_doubleTest;
        }
        /*!
         * @brief This function sets a value in member booleanTest
         * @param _booleanTest New value for member booleanTest
         */
        inline eProsima_user_DllExport void booleanTest(bool _booleanTest)
        {
            m_booleanTest = _booleanTest;
        }

        /*!
         * @brief This function returns the value of member booleanTest
         * @return Value of member booleanTest
         */
        inline eProsima_user_DllExport bool booleanTest() const
        {
            return m_booleanTest;
        }

        /*!
         * @brief This function returns a reference to member booleanTest
         * @return Reference to member booleanTest
         */
        inline eProsima_user_DllExport bool& booleanTest()
        {
            return m_booleanTest;
        }
        /*!
         * @brief This function sets a value in member colorTest
         * @param _colorTest New value for member colorTest
         */
        inline eProsima_user_DllExport void colorTest(test::Color _colorTest)
        {
            m_colorTest = _colorTest;
        }

        /*!
         * @brief This function returns the value of member colorTest
         * @return Value of member colorTest
         */
        inline eProsima_user_DllExport test::Color colorTest() const
        {
            return m_colorTest;
        }

        /*!
         * @brief This function returns a reference to member colorTest
         * @return Reference to member colorTest
         */
        inline eProsima_user_DllExport test::Color& colorTest()
        {
            return m_colorTest;
        }
        /*!
         * @brief This function copies the value in member nestedElementTest
         * @param _nestedElementTest New value to be copied in member nestedElementTest
         */
        inline eProsima_user_DllExport void nestedElementTest(const nested::NestedElement &_nestedElementTest)
        {
            m_nestedElementTest = _nestedElementTest;
        }

        /*!
         * @brief This function moves the value in member nestedElementTest
         * @param _nestedElementTest New value to be moved in member nestedElementTest
         */
        inline eProsima_user_DllExport void nestedElementTest(nested::NestedElement &&_nestedElementTest)
        {
            m_nestedElementTest = std::move(_nestedElementTest);
        }

        /*!
         * @brief This function returns a constant reference to member nestedElementTest
         * @return Constant reference to member nestedElementTest
         */
        inline eProsima_user_DllExport const nested::NestedElement& nestedElementTest() const
        {
            return m_nestedElementTest;
        }

        /*!
         * @brief This function returns a reference to member nestedElementTest
         * @return Reference to member nestedElementTest
         */
        inline eProsima_user_DllExport nested::NestedElement& nestedElementTest()
        {
            return m_nestedElementTest;
        }
        /*!
         * @brief This function copies the value in member stringTest
         * @param _stringTest New value to be copied in member stringTest
         */
        inline eProsima_user_DllExport void stringTest(const std::string &_stringTest)
        {
            m_stringTest = _stringTest;
        }

        /*!
         * @brief This function moves the value in member stringTest
         * @param _stringTest New value to be moved in member stringTest
         */
        inline eProsima_user_DllExport void stringTest(std::string &&_stringTest)
        {
            m_stringTest = std::move(_stringTest);
        }

        /*!
         * @brief This function returns a constant reference to member stringTest
         * @return Constant reference to member stringTest
         */
        inline eProsima_user_DllExport const std::string& stringTest() const
        {
            return m_stringTest;
        }

        /*!
         * @brief This function returns a reference to member stringTest
         * @return Reference to member stringTest
         */
        inline eProsima_user_DllExport std::string& stringTest()
        {
            return m_stringTest;
        }
        /*!
         * @brief This function copies the value in member longArray
         * @param _longArray New value to be copied in member longArray
         */
        inline eProsima_user_DllExport void longArray(const std::array<int32_t, 10> &_longArray)
        {
            m_longArray = _longArray;
        }

        /*!
         * @brief This function moves the value in member longArray
         * @param _longArray New value to be moved in member longArray
         */
        inline eProsima_user_DllExport void longArray(std::array<int32_t, 10> &&_longArray)
        {
            m_longArray = std::move(_longArray);
        }

        /*!
         * @brief This function returns a constant reference to member longArray
         * @return Constant reference to member longArray
         */
        inline eProsima_user_DllExport const std::array<int32_t, 10>& longArray() const
        {
            return m_longArray;
        }

        /*!
         * @brief This function returns a reference to member longArray
         * @return Reference to member longArray
         */
        inline eProsima_user_DllExport std::array<int32_t, 10>& longArray()
        {
            return m_longArray;
        }
        /*!
         * @brief This function copies the value in member nestedArray
         * @param _nestedArray New value to be copied in member nestedArray
         */
        inline eProsima_user_DllExport void nestedArray(const std::array<std::array<nested::NestedElement, 3>, 5> &_nestedArray)
        {
            m_nestedArray = _nestedArray;
        }

        /*!
         * @brief This function moves the value in member nestedArray
         * @param _nestedArray New value to be moved in member nestedArray
         */
        inline eProsima_user_DllExport void nestedArray(std::array<std::array<nested::NestedElement, 3>, 5> &&_nestedArray)
        {
            m_nestedArray = std::move(_nestedArray);
        }

        /*!
         * @brief This function returns a constant reference to member nestedArray
         * @return Constant reference to member nestedArray
         */
        inline eProsima_user_DllExport const std::array<std::array<nested::NestedElement, 3>, 5>& nestedArray() const
        {
            return m_nestedArray;
        }

        /*!
         * @brief This function returns a reference to member nestedArray
         * @return Reference to member nestedArray
         */
        inline eProsima_user_DllExport std::array<std::array<nested::NestedElement, 3>, 5>& nestedArray()
        {
            return m_nestedArray;
        }
        /*!
         * @brief This function copies the value in member stringArray
         * @param _stringArray New value to be copied in member stringArray
         */
        inline eProsima_user_DllExport void stringArray(const std::array<std::string, 4> &_stringArray)
        {
            m_stringArray = _stringArray;
        }

        /*!
         * @brief This function moves the value in member stringArray
         * @param _stringArray New value to be moved in member stringArray
         */
        inline eProsima_user_DllExport void stringArray(std::array<std::string, 4> &&_stringArray)
        {
            m_stringArray = std::move(_stringArray);
        }

        /*!
         * @brief This function returns a constant reference to member stringArray
         * @return Constant reference to member stringArray
         */
        inline eProsima_user_DllExport const std::array<std::string, 4>& stringArray() const
        {
            return m_stringArray;
        }

        /*!
         * @brief This function returns a reference to member stringArray
         * @return Reference to member stringArray
         */
        inline eProsima_user_DllExport std::array<std::string, 4>& stringArray()
        {
            return m_stringArray;
        }
        /*!
         * @brief This function copies the value in member enumArray
         * @param _enumArray New value to be copied in member enumArray
         */
        inline eProsima_user_DllExport void enumArray(const std::array<test::Color, 6> &_enumArray)
        {
            m_enumArray = _enumArray;
        }

        /*!
         * @brief This function moves the value in member enumArray
         * @param _enumArray New value to be moved in member enumArray
         */
        inline eProsima_user_DllExport void enumArray(std::array<test::Color, 6> &&_enumArray)
        {
            m_enumArray = std::move(_enumArray);
        }

        /*!
         * @brief This function returns a constant reference to member enumArray
         * @return Constant reference to member enumArray
         */
        inline eProsima_user_DllExport const std::array<test::Color, 6>& enumArray() const
        {
            return m_enumArray;
        }

        /*!
         * @brief This function returns a reference to member enumArray
         * @return Reference to member enumArray
         */
        inline eProsima_user_DllExport std::array<test::Color, 6>& enumArray()
        {
            return m_enumArray;
        }
        /*!
         * @brief This function copies the value in member charSeqTest
         * @param _charSeqTest New value to be copied in member charSeqTest
         */
        inline eProsima_user_DllExport void charSeqTest(const std::vector<char> &_charSeqTest)
        {
            m_charSeqTest = _charSeqTest;
        }

        /*!
         * @brief This function moves the value in member charSeqTest
         * @param _charSeqTest New value to be moved in member charSeqTest
         */
        inline eProsima_user_DllExport void charSeqTest(std::vector<char> &&_charSeqTest)
        {
            m_charSeqTest = std::move(_charSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member charSeqTest
         * @return Constant reference to member charSeqTest
         */
        inline eProsima_user_DllExport const std::vector<char>& charSeqTest() const
        {
            return m_charSeqTest;
        }

        /*!
         * @brief This function returns a reference to member charSeqTest
         * @return Reference to member charSeqTest
         */
        inline eProsima_user_DllExport std::vector<char>& charSeqTest()
        {
            return m_charSeqTest;
        }
        /*!
         * @brief This function copies the value in member wcharSeqTest
         * @param _wcharSeqTest New value to be copied in member wcharSeqTest
         */
        inline eProsima_user_DllExport void wcharSeqTest(const std::vector<wchar_t> &_wcharSeqTest)
        {
            m_wcharSeqTest = _wcharSeqTest;
        }

        /*!
         * @brief This function moves the value in member wcharSeqTest
         * @param _wcharSeqTest New value to be moved in member wcharSeqTest
         */
        inline eProsima_user_DllExport void wcharSeqTest(std::vector<wchar_t> &&_wcharSeqTest)
        {
            m_wcharSeqTest = std::move(_wcharSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member wcharSeqTest
         * @return Constant reference to member wcharSeqTest
         */
        inline eProsima_user_DllExport const std::vector<wchar_t>& wcharSeqTest() const
        {
            return m_wcharSeqTest;
        }

        /*!
         * @brief This function returns a reference to member wcharSeqTest
         * @return Reference to member wcharSeqTest
         */
        inline eProsima_user_DllExport std::vector<wchar_t>& wcharSeqTest()
        {
            return m_wcharSeqTest;
        }
        /*!
         * @brief This function copies the value in member octetSeqTest
         * @param _octetSeqTest New value to be copied in member octetSeqTest
         */
        inline eProsima_user_DllExport void octetSeqTest(const std::vector<uint8_t> &_octetSeqTest)
        {
            m_octetSeqTest = _octetSeqTest;
        }

        /*!
         * @brief This function moves the value in member octetSeqTest
         * @param _octetSeqTest New value to be moved in member octetSeqTest
         */
        inline eProsima_user_DllExport void octetSeqTest(std::vector<uint8_t> &&_octetSeqTest)
        {
            m_octetSeqTest = std::move(_octetSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member octetSeqTest
         * @return Constant reference to member octetSeqTest
         */
        inline eProsima_user_DllExport const std::vector<uint8_t>& octetSeqTest() const
        {
            return m_octetSeqTest;
        }

        /*!
         * @brief This function returns a reference to member octetSeqTest
         * @return Reference to member octetSeqTest
         */
        inline eProsima_user_DllExport std::vector<uint8_t>& octetSeqTest()
        {
            return m_octetSeqTest;
        }
        /*!
         * @brief This function copies the value in member shortSeqTest
         * @param _shortSeqTest New value to be copied in member shortSeqTest
         */
        inline eProsima_user_DllExport void shortSeqTest(const std::vector<int16_t> &_shortSeqTest)
        {
            m_shortSeqTest = _shortSeqTest;
        }

        /*!
         * @brief This function moves the value in member shortSeqTest
         * @param _shortSeqTest New value to be moved in member shortSeqTest
         */
        inline eProsima_user_DllExport void shortSeqTest(std::vector<int16_t> &&_shortSeqTest)
        {
            m_shortSeqTest = std::move(_shortSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member shortSeqTest
         * @return Constant reference to member shortSeqTest
         */
        inline eProsima_user_DllExport const std::vector<int16_t>& shortSeqTest() const
        {
            return m_shortSeqTest;
        }

        /*!
         * @brief This function returns a reference to member shortSeqTest
         * @return Reference to member shortSeqTest
         */
        inline eProsima_user_DllExport std::vector<int16_t>& shortSeqTest()
        {
            return m_shortSeqTest;
        }
        /*!
         * @brief This function copies the value in member ushortSeqTest
         * @param _ushortSeqTest New value to be copied in member ushortSeqTest
         */
        inline eProsima_user_DllExport void ushortSeqTest(const std::vector<uint16_t> &_ushortSeqTest)
        {
            m_ushortSeqTest = _ushortSeqTest;
        }

        /*!
         * @brief This function moves the value in member ushortSeqTest
         * @param _ushortSeqTest New value to be moved in member ushortSeqTest
         */
        inline eProsima_user_DllExport void ushortSeqTest(std::vector<uint16_t> &&_ushortSeqTest)
        {
            m_ushortSeqTest = std::move(_ushortSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member ushortSeqTest
         * @return Constant reference to member ushortSeqTest
         */
        inline eProsima_user_DllExport const std::vector<uint16_t>& ushortSeqTest() const
        {
            return m_ushortSeqTest;
        }

        /*!
         * @brief This function returns a reference to member ushortSeqTest
         * @return Reference to member ushortSeqTest
         */
        inline eProsima_user_DllExport std::vector<uint16_t>& ushortSeqTest()
        {
            return m_ushortSeqTest;
        }
        /*!
         * @brief This function copies the value in member longSeqTest
         * @param _longSeqTest New value to be copied in member longSeqTest
         */
        inline eProsima_user_DllExport void longSeqTest(const std::vector<int32_t> &_longSeqTest)
        {
            m_longSeqTest = _longSeqTest;
        }

        /*!
         * @brief This function moves the value in member longSeqTest
         * @param _longSeqTest New value to be moved in member longSeqTest
         */
        inline eProsima_user_DllExport void longSeqTest(std::vector<int32_t> &&_longSeqTest)
        {
            m_longSeqTest = std::move(_longSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member longSeqTest
         * @return Constant reference to member longSeqTest
         */
        inline eProsima_user_DllExport const std::vector<int32_t>& longSeqTest() const
        {
            return m_longSeqTest;
        }

        /*!
         * @brief This function returns a reference to member longSeqTest
         * @return Reference to member longSeqTest
         */
        inline eProsima_user_DllExport std::vector<int32_t>& longSeqTest()
        {
            return m_longSeqTest;
        }
        /*!
         * @brief This function copies the value in member ulongSeqTest
         * @param _ulongSeqTest New value to be copied in member ulongSeqTest
         */
        inline eProsima_user_DllExport void ulongSeqTest(const std::vector<uint32_t> &_ulongSeqTest)
        {
            m_ulongSeqTest = _ulongSeqTest;
        }

        /*!
         * @brief This function moves the value in member ulongSeqTest
         * @param _ulongSeqTest New value to be moved in member ulongSeqTest
         */
        inline eProsima_user_DllExport void ulongSeqTest(std::vector<uint32_t> &&_ulongSeqTest)
        {
            m_ulongSeqTest = std::move(_ulongSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member ulongSeqTest
         * @return Constant reference to member ulongSeqTest
         */
        inline eProsima_user_DllExport const std::vector<uint32_t>& ulongSeqTest() const
        {
            return m_ulongSeqTest;
        }

        /*!
         * @brief This function returns a reference to member ulongSeqTest
         * @return Reference to member ulongSeqTest
         */
        inline eProsima_user_DllExport std::vector<uint32_t>& ulongSeqTest()
        {
            return m_ulongSeqTest;
        }
        /*!
         * @brief This function copies the value in member longlongSeqtest
         * @param _longlongSeqtest New value to be copied in member longlongSeqtest
         */
        inline eProsima_user_DllExport void longlongSeqtest(const std::vector<int64_t> &_longlongSeqtest)
        {
            m_longlongSeqtest = _longlongSeqtest;
        }

        /*!
         * @brief This function moves the value in member longlongSeqtest
         * @param _longlongSeqtest New value to be moved in member longlongSeqtest
         */
        inline eProsima_user_DllExport void longlongSeqtest(std::vector<int64_t> &&_longlongSeqtest)
        {
            m_longlongSeqtest = std::move(_longlongSeqtest);
        }

        /*!
         * @brief This function returns a constant reference to member longlongSeqtest
         * @return Constant reference to member longlongSeqtest
         */
        inline eProsima_user_DllExport const std::vector<int64_t>& longlongSeqtest() const
        {
            return m_longlongSeqtest;
        }

        /*!
         * @brief This function returns a reference to member longlongSeqtest
         * @return Reference to member longlongSeqtest
         */
        inline eProsima_user_DllExport std::vector<int64_t>& longlongSeqtest()
        {
            return m_longlongSeqtest;
        }
        /*!
         * @brief This function copies the value in member ulonglongSeqTest
         * @param _ulonglongSeqTest New value to be copied in member ulonglongSeqTest
         */
        inline eProsima_user_DllExport void ulonglongSeqTest(const std::vector<uint64_t> &_ulonglongSeqTest)
        {
            m_ulonglongSeqTest = _ulonglongSeqTest;
        }

        /*!
         * @brief This function moves the value in member ulonglongSeqTest
         * @param _ulonglongSeqTest New value to be moved in member ulonglongSeqTest
         */
        inline eProsima_user_DllExport void ulonglongSeqTest(std::vector<uint64_t> &&_ulonglongSeqTest)
        {
            m_ulonglongSeqTest = std::move(_ulonglongSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member ulonglongSeqTest
         * @return Constant reference to member ulonglongSeqTest
         */
        inline eProsima_user_DllExport const std::vector<uint64_t>& ulonglongSeqTest() const
        {
            return m_ulonglongSeqTest;
        }

        /*!
         * @brief This function returns a reference to member ulonglongSeqTest
         * @return Reference to member ulonglongSeqTest
         */
        inline eProsima_user_DllExport std::vector<uint64_t>& ulonglongSeqTest()
        {
            return m_ulonglongSeqTest;
        }
        /*!
         * @brief This function copies the value in member floatSeqTest
         * @param _floatSeqTest New value to be copied in member floatSeqTest
         */
        inline eProsima_user_DllExport void floatSeqTest(const std::vector<float> &_floatSeqTest)
        {
            m_floatSeqTest = _floatSeqTest;
        }

        /*!
         * @brief This function moves the value in member floatSeqTest
         * @param _floatSeqTest New value to be moved in member floatSeqTest
         */
        inline eProsima_user_DllExport void floatSeqTest(std::vector<float> &&_floatSeqTest)
        {
            m_floatSeqTest = std::move(_floatSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member floatSeqTest
         * @return Constant reference to member floatSeqTest
         */
        inline eProsima_user_DllExport const std::vector<float>& floatSeqTest() const
        {
            return m_floatSeqTest;
        }

        /*!
         * @brief This function returns a reference to member floatSeqTest
         * @return Reference to member floatSeqTest
         */
        inline eProsima_user_DllExport std::vector<float>& floatSeqTest()
        {
            return m_floatSeqTest;
        }
        /*!
         * @brief This function copies the value in member doubleSeqTest
         * @param _doubleSeqTest New value to be copied in member doubleSeqTest
         */
        inline eProsima_user_DllExport void doubleSeqTest(const std::vector<double> &_doubleSeqTest)
        {
            m_doubleSeqTest = _doubleSeqTest;
        }

        /*!
         * @brief This function moves the value in member doubleSeqTest
         * @param _doubleSeqTest New value to be moved in member doubleSeqTest
         */
        inline eProsima_user_DllExport void doubleSeqTest(std::vector<double> &&_doubleSeqTest)
        {
            m_doubleSeqTest = std::move(_doubleSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member doubleSeqTest
         * @return Constant reference to member doubleSeqTest
         */
        inline eProsima_user_DllExport const std::vector<double>& doubleSeqTest() const
        {
            return m_doubleSeqTest;
        }

        /*!
         * @brief This function returns a reference to member doubleSeqTest
         * @return Reference to member doubleSeqTest
         */
        inline eProsima_user_DllExport std::vector<double>& doubleSeqTest()
        {
            return m_doubleSeqTest;
        }
        /*!
         * @brief This function copies the value in member booleanSeqTest
         * @param _booleanSeqTest New value to be copied in member booleanSeqTest
         */
        inline eProsima_user_DllExport void booleanSeqTest(const std::vector<bool> &_booleanSeqTest)
        {
            m_booleanSeqTest = _booleanSeqTest;
        }

        /*!
         * @brief This function moves the value in member booleanSeqTest
         * @param _booleanSeqTest New value to be moved in member booleanSeqTest
         */
        inline eProsima_user_DllExport void booleanSeqTest(std::vector<bool> &&_booleanSeqTest)
        {
            m_booleanSeqTest = std::move(_booleanSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member booleanSeqTest
         * @return Constant reference to member booleanSeqTest
         */
        inline eProsima_user_DllExport const std::vector<bool>& booleanSeqTest() const
        {
            return m_booleanSeqTest;
        }

        /*!
         * @brief This function returns a reference to member booleanSeqTest
         * @return Reference to member booleanSeqTest
         */
        inline eProsima_user_DllExport std::vector<bool>& booleanSeqTest()
        {
            return m_booleanSeqTest;
        }
        /*!
         * @brief This function copies the value in member nestedSeqTest
         * @param _nestedSeqTest New value to be copied in member nestedSeqTest
         */
        inline eProsima_user_DllExport void nestedSeqTest(const std::vector<nested::NestedElement> &_nestedSeqTest)
        {
            m_nestedSeqTest = _nestedSeqTest;
        }

        /*!
         * @brief This function moves the value in member nestedSeqTest
         * @param _nestedSeqTest New value to be moved in member nestedSeqTest
         */
        inline eProsima_user_DllExport void nestedSeqTest(std::vector<nested::NestedElement> &&_nestedSeqTest)
        {
            m_nestedSeqTest = std::move(_nestedSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member nestedSeqTest
         * @return Constant reference to member nestedSeqTest
         */
        inline eProsima_user_DllExport const std::vector<nested::NestedElement>& nestedSeqTest() const
        {
            return m_nestedSeqTest;
        }

        /*!
         * @brief This function returns a reference to member nestedSeqTest
         * @return Reference to member nestedSeqTest
         */
        inline eProsima_user_DllExport std::vector<nested::NestedElement>& nestedSeqTest()
        {
            return m_nestedSeqTest;
        }
        /*!
         * @brief This function copies the value in member enumSeqTest
         * @param _enumSeqTest New value to be copied in member enumSeqTest
         */
        inline eProsima_user_DllExport void enumSeqTest(const std::vector<test::Color> &_enumSeqTest)
        {
            m_enumSeqTest = _enumSeqTest;
        }

        /*!
         * @brief This function moves the value in member enumSeqTest
         * @param _enumSeqTest New value to be moved in member enumSeqTest
         */
        inline eProsima_user_DllExport void enumSeqTest(std::vector<test::Color> &&_enumSeqTest)
        {
            m_enumSeqTest = std::move(_enumSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member enumSeqTest
         * @return Constant reference to member enumSeqTest
         */
        inline eProsima_user_DllExport const std::vector<test::Color>& enumSeqTest() const
        {
            return m_enumSeqTest;
        }

        /*!
         * @brief This function returns a reference to member enumSeqTest
         * @return Reference to member enumSeqTest
         */
        inline eProsima_user_DllExport std::vector<test::Color>& enumSeqTest()
        {
            return m_enumSeqTest;
        }
        /*!
         * @brief This function copies the value in member stringSeqTest
         * @param _stringSeqTest New value to be copied in member stringSeqTest
         */
        inline eProsima_user_DllExport void stringSeqTest(const std::vector<std::string> &_stringSeqTest)
        {
            m_stringSeqTest = _stringSeqTest;
        }

        /*!
         * @brief This function moves the value in member stringSeqTest
         * @param _stringSeqTest New value to be moved in member stringSeqTest
         */
        inline eProsima_user_DllExport void stringSeqTest(std::vector<std::string> &&_stringSeqTest)
        {
            m_stringSeqTest = std::move(_stringSeqTest);
        }

        /*!
         * @brief This function returns a constant reference to member stringSeqTest
         * @return Constant reference to member stringSeqTest
         */
        inline eProsima_user_DllExport const std::vector<std::string>& stringSeqTest() const
        {
            return m_stringSeqTest;
        }

        /*!
         * @brief This function returns a reference to member stringSeqTest
         * @return Reference to member stringSeqTest
         */
        inline eProsima_user_DllExport std::vector<std::string>& stringSeqTest()
        {
            return m_stringSeqTest;
        }
        
        /*!
         * @brief This function returns the maximum serialized size of an object
         * depending on the buffer alignment.
         * @param current_alignment Buffer alignment.
         * @return Maximum serialized size.
         */
        eProsima_user_DllExport static size_t getMaxCdrSerializedSize(size_t current_alignment = 0);

        /*!
         * @brief This function returns the serialized size of a data depending on the buffer alignment.
         * @param data Data which is calculated its serialized size.
         * @param current_alignment Buffer alignment.
         * @return Serialized size.
         */
        eProsima_user_DllExport static size_t getCdrSerializedSize(const test::IDLElementTest& data, size_t current_alignment = 0);


        /*!
         * @brief This function serializes an object using CDR serialization.
         * @param cdr CDR serialization object.
         */
        eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const;

        /*!
         * @brief This function deserializes an object using CDR serialization.
         * @param cdr CDR serialization object.
         */
        eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr);



        /*!
         * @brief This function returns the maximum serialized size of the Key of an object
         * depending on the buffer alignment.
         * @param current_alignment Buffer alignment.
         * @return Maximum serialized size.
         */
        eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(size_t current_alignment = 0);

        /*!
         * @brief This function tells you if the Key has been defined for this type
         */
        eProsima_user_DllExport static bool isKeyDefined();

        /*!
         * @brief This function serializes the key members of an object using CDR serialization.
         * @param cdr CDR serialization object.
         */
        eProsima_user_DllExport void serializeKey(eprosima::fastcdr::Cdr &cdr) const;
        
    private:
        char m_charTest;
        wchar_t m_wcharTest;
        uint8_t m_octetTest;
        int16_t m_shortTest;
        uint16_t m_ushortTest;
        int32_t m_longTest;
        uint32_t m_ulongTest;
        int64_t m_longlongTest;
        uint64_t m_ulonglongTest;
        float m_floatTest;
        double m_doubleTest;
        bool m_booleanTest;
        test::Color m_colorTest;
        nested::NestedElement m_nestedElementTest;
        std::string m_stringTest;
        std::array<int32_t, 10> m_longArray;
        std::array<std::array<nested::NestedElement, 3>, 5> m_nestedArray;
        std::array<std::string, 4> m_stringArray;
        std::array<test::Color, 6> m_enumArray;
        std::vector<char> m_charSeqTest;
        std::vector<wchar_t> m_wcharSeqTest;
        std::vector<uint8_t> m_octetSeqTest;
        std::vector<int16_t> m_shortSeqTest;
        std::vector<uint16_t> m_ushortSeqTest;
        std::vector<int32_t> m_longSeqTest;
        std::vector<uint32_t> m_ulongSeqTest;
        std::vector<int64_t> m_longlongSeqtest;
        std::vector<uint64_t> m_ulonglongSeqTest;
        std::vector<float> m_floatSeqTest;
        std::vector<double> m_doubleSeqTest;
        std::vector<bool> m_booleanSeqTest;
        std::vector<nested::NestedElement> m_nestedSeqTest;
        std::vector<test::Color> m_enumSeqTest;
        std::vector<std::string> m_stringSeqTest;
    };
}

#endif // _IDLElementTest_H_